home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- #
- # apmd_proxy - program dispatcher for APM daemon
- #
- # Written by Craig Markwardt (craigm@lheamail.gsfc.nasa.gov) 21 May 1999
- # Modified for Debian by Avery Pennarun
- #
- # This shell script is called by the APM daemon (apmd) when a power
- # management event occurs. Its first and second arguments describe the
- # event. For example, apmd will call "apmd_proxy suspend system" just
- # before the system is suspended.
- #
- # Here are the possible arguments:
- #
- # start - APM daemon has started
- # stop - APM daemon is shutting down
- # suspend critical - APM system indicates critical suspend (++)
- # suspend system - APM system has requested suspend mode
- # suspend user - User has requested suspend mode
- # standby system - APM system has requested standby mode
- # standby user - User has requested standby mode
- # resume suspend - System has resumed from suspend mode
- # resume standby - System has resumed from standby mode
- # resume critical - System has resumed from critical suspend
- # change battery - APM system reported low battery
- # change power - APM system reported AC/battery change
- # change time - APM system reported time change (*)
- # change capability - APM system reported config. change (+)
- #
- # (*) - APM daemon may be configured to not call these sequences
- # (+) - Available if APM kernel supports it.
- # (++) - "suspend critical" is never passed to apmd from the kernel,
- # so we will never see it here. Scripts that process "resume
- # critical" events need to take this into account.
- #
- # It is the proxy script's responsibility to examine the APM status
- # (via /proc/apm) or other status and to take appropriate actions.
- # For example, the script might unmount network drives before the
- # machine is suspended.
- #
- # In Debian, the usual way of adding functionality to the proxy is to
- # add a script to /etc/apm/event.d. This script will be called by
- # apmd_proxy (via run-parts) with the same arguments.
- #
- # If it is important that a certain set of script be run in a certain
- # order on suspend and in a different order on resume, then put all
- # the scripts in /etc/apm/scripts.d instead of /etc/apm/event.d and
- # symlink to these from /etc/apm/suspend.d, /etc/apm/resume.d and
- # /etc/apm/other.d using names whose lexicographical order is the same
- # as the desired order of execution.
- #
- # If the kernel's APM driver supports it, apmd_proxy can return a non-zero
- # exit status on suspend and standby events, indicating that the suspend
- # or standby event should be rejected.
- #
- # *******************************************************************
-
- set -e
-
- # The following doesn't yet work, because current kernels (up to at least
- # 2.4.20) do not support rejection of APM events. Supporting this would
- # require substantial modifications to the APM driver. We will re-enable
- # this feature if the driver is ever modified. -- cph@debian.org
- #
- #SUSPEND_ON_AC=false
- #[ -r /etc/apm/apmd_proxy.conf ] && . /etc/apm/apmd_proxy.conf
- #
- #if [ "${SUSPEND_ON_AC}" = "false" -a "${2}" = "system" ] \
- # && on_ac_power >/dev/null; then
- # # Reject system suspends and standbys if we are on AC power
- # exit 1 # Reject (NOTE kernel support must be enabled)
- #fi
-
- if [ "${1}" = "suspend" -o "${1}" = "standby" ]; then
- run-parts --arg="${1}" --arg="${2}" /etc/apm/event.d
- if [ -d /etc/apm/suspend.d ]; then
- run-parts --arg="${1}" --arg="${2}" /etc/apm/suspend.d
- fi
- elif [ "${1}" = "resume" ]; then
- if [ -d /etc/apm/resume.d ]; then
- run-parts --arg="${1}" --arg="${2}" /etc/apm/resume.d
- fi
- run-parts --arg="${1}" --arg="${2}" /etc/apm/event.d
- else
- run-parts --arg="${1}" --arg="${2}" /etc/apm/event.d
- if [ -d /etc/apm/other.d ]; then
- run-parts --arg="${1}" --arg="${2}" /etc/apm/other.d
- fi
- fi
-
- exit 0
-